package com.pethome.pet.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.pethome.pet.domain.Pet;
import com.pethome.pet.mapper.PetMapper;
import com.pethome.pet.service.IPetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 宠物信息Service业务层处理
 * 
 * @author hjc
 * @date 2024-08-26
 */
@Service
public class PetServiceImpl extends ServiceImpl<PetMapper,Pet> implements IPetService
{
    @Autowired
    private PetMapper petMapper;


    /**
     *  通过pet 查询相关的宠物信息列表
     * @param pet
     * @return
     */
    @Override
    public List<Pet> getListByPet(Pet pet) {
        return petMapper.selectPetList(pet);
    }

    /**
     * 获取 n 条可以领养的宠物信息
     * @return list
     */
    @Override
    public List<Pet> getPetList() {
        QueryWrapper<Pet> qw = new QueryWrapper<Pet>();
        //查找允许被展示的宠物，并且宠物已被领养
        qw.eq("pet_status",2);
        List<Pet> list =this.list(qw);
//        list.forEach(System.out::print);
//        List<Pet> firstFour;
//        if (list.size() < 2) {
//            firstFour = list.subList(0, list.size());
//        } else {
//            firstFour = list.subList(0, 4);
//        }


        return list;
    }

    /**
     * 首页展示宠物信息
     * @return
     */
    @Override
    public List<Pet> show() {
        QueryWrapper<Pet> qw = new QueryWrapper<Pet>();
        //查找允许被展示的宠物，并且宠物已被领养
        qw.eq("pet_show",1);
        qw.eq("pet_status",2);

        List<Pet> list =this.list(qw);
//        list.forEach(System.out::print);
        List<Pet> firstFour;
        if (list.size() < 4) {
            firstFour = list.subList(0, list.size());
        } else {
            firstFour = list.subList(0, 4);
        }

        //展示前4条

        return firstFour;
    }

    /**
     * 修改宠物状态
     * @param status 宠物状态 1-收容审批，2-已收容，3-领养审批，4-已被领养，5-宠物丢失
     * @return 修改的行数
     */
    @Override
    public Integer updatePetStatus(Long petId,Long status) {
        Pet pet = new Pet();
        pet.setPetId(petId);
        pet.setPetStatus(status);
        System.out.println(pet.toString());
        return petMapper.updatePet(pet);
    }

    /**
     * 前端用户查看可以领养的宠物信息 房子前端路由查看已经领养的宠物的信息
     * @param petId 宠物信息主键
     * @return
     */
    @Override
    public Pet selectPetByPetIdAndStatus(Long petId) {
        QueryWrapper<Pet> qw = new QueryWrapper<Pet>();
        qw.eq("pet_id",petId);
        qw.eq("pet_status",2);
        return this.getOne(qw);
    }









    /**
     * 查询宠物信息
     * 
     * @param petId 宠物信息主键
     * @return 宠物信息
     */
    @Override
    public Pet selectPetByPetId(Long petId)
    {
        return petMapper.selectPetByPetId(petId);
    }



    /**
     * 查询宠物信息列表
     * 
     * @param pet 宠物信息
     * @return 宠物信息
     */
    @Override
    public List<Pet> selectPetList(Pet pet)
    {
        return petMapper.selectPetList(pet);
    }

    /**
     * 新增宠物信息
     * 
     * @param pet 宠物信息
     * @return 结果
     */
    @Override
    public int insertPet(Pet pet)
    {
        return petMapper.insertPet(pet);
    }

    /**
     * 修改宠物信息
     * 
     * @param pet 宠物信息
     * @return 结果
     */
    @Override
    public int updatePet(Pet pet)
    {
        return petMapper.updatePet(pet);
    }

    /**
     * 批量删除宠物信息
     * 
     * @param petIds 需要删除的宠物信息主键
     * @return 结果
     */
    @Override
    public int deletePetByPetIds(Long[] petIds)
    {
        return petMapper.deletePetByPetIds(petIds);
    }

    /**
     * 删除宠物信息信息
     * 
     * @param petId 宠物信息主键
     * @return 结果
     */
    @Override
    public int deletePetByPetId(Long petId)
    {
        return petMapper.deletePetByPetId(petId);
    }
}
